package com.topdt.jbpm.service;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.thx.common.service.BaseManager;
import com.topdt.jbpm.dao.ApplicationDao;
import com.topdt.jbpm.dao.TodoDao;
import com.topdt.jbpm.dao.WorkDao;
import com.topdt.jbpm.model.Todo;


@Service
@Transactional(readOnly = true)
public class TodoService extends BaseManager<Todo>{
	@Autowired
	private TodoDao todoDao;

	@Autowired
	private ApplicationDao appDao;

	@Autowired
	private WorkDao workDao;

	public List<Todo> getAll(String userId,String todoTitle){
		return todoDao.getAll(userId,todoTitle);
	}

	/**
	 * 重载getAll方法，根据appId查找待办
	 * @author 冯晋首
	 * @date   2015年12月22日 上午9:03:29
	 * @param userId
	 * @param todoTitle
	 * @param appId
	 * @return
	 */
	public List<Todo> getAll(String userId, String todoTitle, String appId){
		return todoDao.getAll(userId, todoTitle, appId);
	}

	/**
	 * 分页获取用户所有待办
	 * @author 刘杰
	 * @date   2015年12月28日 下午2:20:48
	 * @param userId
	 * @param todoTitle
	 * @return
	 */
	public List<Todo> getAllTodo(String userId,String todoTitle){
		return todoDao.getAllTodo(userId,todoTitle);
	}

	/**
	 *
	 * @author wangamin
	 * @date 2013-4-17 上午11:23:40
	 * @return
	 */

	public List<Todo> getTodoByUserId(String userId,int num) {
		return todoDao.getTodoByUserId(userId,num);
	}

	/**
	 * 得到待办总数
	 * @author 刘杰
	 * @date   2016年1月20日 下午8:29:19
	 * @param userId
	 * @return
	 */
	public int getTodoTotalNum(String userId) {
		return todoDao.getTodoTotalNum(userId);
	}

	/**
	 * 通过workId获取待办工作
	 *
	 * @param personnelId
	 * @param appName
	 * @param page
	 * @return
	 */
	public List<Todo> findByWorkId(String userId, String appId, String todoTitle) {
		return todoDao.getTodoPage(userId, appId, todoTitle);
	}

	/**
	 * 客户端取得公文待办
	 * @author zhangyong
	 * @date   2015年12月23日 上午11:31:34
	 * @param personnelId
	 * @param appId
	 * @param start
	 * @param max
	 * @param todoTitle
	 * @return
	 */
	public List<Todo> getTodoByAppIdOfDodument(String personnelId, String appId, int start, int max,String todoTitle) {
		List<Todo> todoList = todoDao.getTodoByAppIdOfDodument(personnelId, appId, start, max,todoTitle);
		return todoList;
	}
	/**
	 * 客户端取得工单待办
	 * @author zhangyong
	 * @date   2015年12月23日 下午2:40:56
	 * @param personnelId
	 * @param appId
	 * @param start
	 * @param max
	 * @param todoTitle
	 * @return
	 */
	public List<Todo> getTodoByAppIdOfTicket(String personnelId, String appId, String todoTitle,int start, int max) {
		List<Todo> todoList = todoDao.getTodoPageOfTicket(personnelId, appId, todoTitle,start, max);
		return todoList;
	}
	/**
	 * @author 贺晋恩
	 * @date 2013-8-7 下午4:49:47
	 * @param uId
	 * @param appIds
	 * @param endDate
	 * @param startdate
	 * @return
	 */
	public int getTodoCount(Long uId, String appIds, Date endDate, Date startdate) {
		return todoDao.getTodoCount(uId, appIds, endDate, startdate);
	}

	public int getTodoCount(Long uId, String appIds) {
		return todoDao.getTodoCount(uId, appIds);
	}



	public int countExtTodo(String uId) {
		return todoDao.countExtTodo(uId);
	}



	/**
	 * 根据work_id删除wf_todo表中记录
	 * @author 刘杰
	 * @date   May 15, 2014 3:01:58 PM
	 * @param delIds
	 */
	@Transactional(readOnly = false)
	public void delWorks(String[] delIds) {
		String delIdsStr = "";
		for (int i = 0; i < delIds.length; i++) {
			if (i == 0) {
				delIdsStr += "'"+delIds[i]+"'";
			} else {
				delIdsStr += "," + "'"+delIds[i]+"'";
			}
		}
		todoDao.deleteworks(delIdsStr);
	}

	/**
	 * 查找有待办工作的人的id
	 * @author 刘杰
	 * @date   Oct 17, 2014 10:15:49 AM
	 * @return
	 */
	public String[][] findUserByTodo() {
		return todoDao.findUserByTodo();
	}

	/**
	 * 查询所有超时的待办工作
	 * @author LCX
	 * @date   20141212
	 * @param nowTime
	 * @return
	 */
	public List<Todo> getTodoByArriveTime(String nowTime) {
		return todoDao.getTodoByArriveTime(nowTime);
	}

	/**
	 * 发送短信之后更新状态
	 * @author LCX
	 * @date   20141209
	 * @param personnelId
	 * @param nowTime
	 * @return
	 * @return
	 */
	@Transactional(readOnly = false)
	public void updateIsSendByWorkId(String todoId) {
		todoDao.updateIsSendByWorkId(todoId);
	}

	/**
	 * 根据workId查找待办
	 * @author 刘杰
	 * @date   2016年1月8日 下午8:26:23
	 * @param workId
	 * @return
	 */
	public List<Todo> findTodosByWorkId(String workId) {
		return todoDao.findTodosByWorkId(workId);
	}

	/**
	 * 查某个人在某个工作的某个环节上是否有处理
	 * @param workId
	 * @param userId
	 * @param activity
	 * @return
	 */
	public Todo findTodoByWorkIdAndActivity(String userId,String workId,String activity){
		return todoDao.findTodoByWorkIdAndActivity(userId,workId,activity);
	}


}